#pragma once

#include "fxcc/core/graph/opengl3/Effect3d.h"
#include "fxcc/core/graph/opengl3/MeshJack.h"
#include "fxcc/core/graph/opengl3/TextureCubeJack.h"

namespace fxcc
{
	namespace graph
	{
		namespace opengl3
		{

			struct FXCC_API   SkyboxEffect : public fxcc::graph::common::EffectBase
			{

				std::shared_ptr<fxcc::graph::opengl3::MeshJack> m_SkyboxMesh;

				std::shared_ptr<fxcc::graph::opengl3::Shader> m_Shader;

				std::string m_FragMain;

				SkyboxEffect();

				SkyboxEffect(const std::string &fragMain);
				
				void Init();
				
				void Begin();
				
				void End();

				std::string GetFragCode();

				static std::string GetVertCode();
				static std::string GetFragTemp();
				static std::string GetDefaultFragCode();
			};
		};
	}
}
